<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>数组的基本介绍</title>
    </head>
    <body></body>
    <script>
        // 1.创建数组
        var daysOfWeek = new Array();
        daysOfWeek = new Array(7);
        daysOfWeek = new Array(
            "Sunday",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday"
        );
        daysOfWeek = [];
        daysOfWeek = [
            "Sunday",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
        ];
        // 上边两种方式的区别：自己了解

        // 2.访问元素和迭代数组
        // 2.1 使用 for 循环来实现

        // 3.添加元素
        // 3.1 末尾添加
        let numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
        // 方法一：
        numbers[numbers.length] = 10;
        // 方法二：push
        numbers.push(11);
        // 3.2 数组开头添加
        // 方法一：
        Array.prototype.insertFirstPosition = function (value) {
            for (let i = this.length; i >= 0; i--) {
                this[i] = this[i - 1];
            }
            this[0] = value;
        };
        numbers.insertFirstPosition(-1);
        // 方法二：unshift
        numbers.unshift(-2);

        // 4.删除元素
        // 4.1 数组末尾删除元素
        numbers.pop();
        // 4.2 数组开头删除
        // 方法一：
        Array.prototype.reIndex = function (myArray) {
            const newArray = [];
            for (let i = 0; i < myArray.length; i++) {
                if (myArray[i] !== undefined) {
                    newArray.push(myArray[i]);
                }
            }
        };
        Array.prototype.removeFirstPosition = function () {
            for (let i = 0; i < numbers.length; i++) {
                this[i] = this[i + 1];
            }
            return this.reIndex(this);
        };
        numbers.removeFirstPosition();
        // 方法二：shift
        numbers.shift();

        // 5.在任意位置添加或者删除元素
        // 5.1 我们使用splice
        numbers.splice(5, 3); // 表示：从索引为5的地方开始删除3个元素
        // 注意：！！！！！！！！！！
        // 我们可以使用 delete numbers[0] 来删除数组0的位置上的值，但是这样只能是让 numbers[0] = undefined 不会改变数组长度
        numbers.splice(5, 3, 2, 3, 4); // 表示从索引为5的地方开始删除3个元素，然后添加 2,3,4三个元素

        // 二维数组和多维数组
        // 这里我们使用 多个 for 循环来实现，这个是js的一个缺陷不能直接定义多维数组
    </script>
</html>
